A computer network is a collection of interconnected network devices that exchange data and share resources. A computer network may comprise a private network, such as a corporate network, or a public network, such as the Internet. Computer networks may include local area networks (LANs) or wide area networks (WANs). As an example, a corporate network may include instant virtual extranet (IVE) devices that allow authorized remote users access to the corporate network. Employees or business partners may connect to the IVE devices over a public network via a virtual private network (VPN) or another type of connection. The IVE devices then communicate with servers or applications within the corporate network. In this way, the IVE devices may serve as access proxies.
Network devices, such as IVE devices, may store copies of the same data. If one of the network devices changes the content of the mutually shared data, the other network devices must update their copies of the mutually shared data to reflect the changed content. The process of updating the copies of the mutually shared data is known as synchronization. For example, a set of IVE devices within a corporate network may each store a mutually shared list of authorized users. In this case, when the corporate network adds a new user to the list of authorized users on a first IVE device, the new user is also added to the list of authorized uses on each of the other IVE devices via synchronization messages from the first IVE device.
Occasionally a network connection between two or more of the network devices may become unavailable due to breakage or maintenance and cause an interruption in the synchronization messages from the other network devices. Once communication is restored, the process of updating the mutually shared data on the network device is known as resynchronization. Traditionally, network devices consume considerable resources when performing resynchronization for large amounts of the mutually shard data. In particular, a first network device may have to copy an entire database of the mutually shared data from a second network device in order to resynchronize the first network device. Despite the increased bandwidth available to many network devices, it still takes a considerable amount of time to transfer large volumes of the mutually shared data. In addition, the network device may be unable to make changes to the mutually shared data before the network device finishes copying the data. In this way, synchronization messages for the mutually shared data may be lost to the network device.
Alternatively, network devices may use a two-phase commit approach that prohibits the network devices from making changes to the mutually shared data unless all the network devices possessing the mutually shared data can make the changes. However, the two-phase commit approach may prevent needed changes in some of the network devices if a network connection to one of the network devices is unavailable.